package bancosys.tec.security.impl.services.incluir;

import jmine.tec.services.annotations.Execution;
import jmine.tec.services.annotations.Input;
import jmine.tec.services.annotations.ServiceImplementor;
import jmine.tec.services.api.ActionsEnum;
import bancosys.tec.security.impl.domain.Group;
import bancosys.tec.security.impl.domain.User;

/**
 * Serviço para associação de usuário a grupo
 * 
 * @author rodrigok
 */
@ServiceImplementor(action = ActionsEnum.INCLUIR)
public class UserGroupService {

    public static final String USERNAME = "Usuário";

    public static final String GRUPO = "Grupo";

    // Obrigatórios
    private User user;

    private Group grupo;

    /**
     * Executa a associação do usuário ao grupo passado.
     */
    @Execution
    public void execute() {
        this.user.addGroup(grupo);
        this.user.getPersister().save();
    }

    /**
     * @param user {@link User}
     */
    @Input(fieldName = USERNAME)
    public void setUser(User user) {
        this.user = user;
    }

    /**
     * @param grupo {@link Group}
     */
    @Input(fieldName = GRUPO)
    public void setGrupo(Group grupo) {
        this.grupo = grupo;
    }

}
